package com.atguigui.leetcode1;

import java.util.HashMap;
import java.util.Map;

/**
 * 1797.设计一个验证系统
 * Project: leetcode
 * Package: com.atguigui.leetcode1
 * Version: 1.0
 * <p>
 * Created by WJX on 2023/2/9 10:27
 */
public class P1797DesignAuthenticationManager {

    public static void main(String[] args) {
        AuthenticationManager solution = new P1797DesignAuthenticationManager().new AuthenticationManager(5);
        // TO TEST
    }

    class AuthenticationManager {

        private int timeToLive = 0;
        private Map<String, Integer> map = new HashMap<>();

        //设置过期时间
        public AuthenticationManager(int timeToLive) {
            this.timeToLive = timeToLive;
        }

        //生成一个新的验证码
        public void generate(String tokenId, int currentTime) {
            map.put(tokenId, currentTime + timeToLive);
        }

        //给定 tokenId 且 未过期 的验证码在 currentTime 时刻更新，如果给定 tokenId 对应的验证码不存在或已过期，请你忽略该操作，不会有任何更新操作发生
        public void renew(String tokenId, int currentTime) {
            if (map.getOrDefault(tokenId, 0) > currentTime) {
                map.put(tokenId, currentTime + timeToLive);

            }
        }

        //请返回在给定 currentTime 时刻，未过期 的验证码数目
        //过期事件 优先于 其他操作
        public int countUnexpiredTokens(int currentTime) {
            int ans = 0;

            for (Integer time : map.values()) {
                if (time > currentTime) {
                    ans++;
                }
            }

            return ans;
        }
    }
}
